package models

import (
	"strconv"
	"time"
)

type Url struct {
	*Model
	Url        string `json:"url"`
	Ip      string `json:"ip"`
	CreatedTime string `json:"created_time"`
	UpdatedTime string `json:"updated_time"`
}

func AddUrl(data map[string]interface{}) {
	url := Url{
		Url:        data["url"].(string),
		Ip:      data["ip"].(string),
		CreatedTime: time.Now().Format("2006-01-02 15:04:05"),
		UpdatedTime: time.Now().Format("2006-01-02 15:04:05"),
	}
	db.AutoMigrate(&url)
	db.Create(&url)
}

//查看资产

func GetUrl(pageNum int, pageSize int, maps interface{}) (url []Url) {
	dbTmp := db
	querys := maps.(map[string]interface{})

	if querys["url"] != nil {
		dbTmp = dbTmp.Where("url LIKE ?", "%"+querys["url"].(string)+"%")
	}


	if querys["ip"] != nil {
		dbTmp = dbTmp.Where("ip LIKE ?", "%"+querys["ip"].(string)+"%")
	}

	if querys["created_time"] != nil {
		dbTmp = dbTmp.Where("created_time LIKE ?", "%"+querys["created_time"].(string)+"%")
	}

	if querys["updated_time"] != nil {
		dbTmp = dbTmp.Where("updated_time LIKE ?", "%"+querys["updated_time"].(string)+"%")
	}

	dbTmp.Offset(pageNum).Limit(pageSize).Order("id  desc").Find(&url)
	return
}

func GetUrlTotal(maps interface{}) (count int) {
	dbTmp := db
	querys := maps.(map[string]interface{})

	if querys["url"] != nil {
		dbTmp = dbTmp.Where("url LIKE ?", "%"+querys["url"].(string)+"%")
	}

	if querys["ip"] != nil {
		dbTmp = dbTmp.Where("ip LIKE ?", "%"+querys["ip"].(string)+"%")
	}

	if querys["created_time"] != nil {
		dbTmp = dbTmp.Where("created_time LIKE ?", "%"+querys["created_time"].(string)+"%")
	}

	if querys["updated_time"] != nil {
		dbTmp = dbTmp.Where("updated_time LIKE ?", "%"+querys["updated_time"].(string)+"%")
	}

	dbTmp.Model(&Url{}).Count(&count)
	return
}

//判断数据库中ip是否存在，如果存在的话，返回URL
func Existurl(url1,ip string) (bool, int) {
	var url Url
	db.Select("id").Where("url = ? AND ip = ?",url1,ip).First(&url)
	if url.ID > 0 {
		return true, url.ID
	}
	return false,url.ID
}
//判断数据库中ip是否存在，如果存在的话，返回URL
func Searchurl(ip string) (bool, string) {
	var url Url
	db.Select("url").Where("ip = ?",ip).First(&url)
	if url.ID > 0 {
		return true, url.Url
	}
	return false,url.Url
}



//更新插入时间
func EditUrl(id int, data interface{}) bool {
	db.Model(&Url{}).Where("id = ?", id).Updates(data)
	return true
}

func DeleteUrl(id int) (bool, int){
	db.Where("id = " + strconv.Itoa(id)).Delete(&Url{})
	return true, id
}


